package xin.fsqr520.project.domain.po;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;

import java.time.LocalDateTime;

/**
 * 动态评论记录实体类
 * 对应数据库表 post_comment
 */
@Data
@TableName("post_comment")
@NoArgsConstructor  // 添加无参构造函数
@AllArgsConstructor // 生成全参构造函数（配合Builder使用）
@Builder(toBuilder = true)  // 允许通过Builder修改对象
//是的，MyBatis（包括 MyBatis-Plus）在默认情况下，优先使用无参构造函数创建实体类对象，
//然后通过 setter 方法为属性赋值。这是 MyBatis 最常用的对象映射方式，也是推荐的做法。
public class PostComment {

    /**
     * 主键ID
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 所属动态ID
     */
    @TableField("post_id")
    private Long postId;

    /**
     * 评论用户ID
     */
    @TableField("user_id")
    private Long userId;

    /**
     * 父评论ID，0表示一级评论
     */
    @TableField("parent_id")
    private Long parentId;

    /**
     * 评论内容
     */
    @TableField("content")
    private String commentContent;

    /**
     * 评论的点赞数（修正为整数类型）
     */
    @TableField("comment_like")
    private Integer likeCount;  // 原String类型改为Integer

    /**
     * 评论时间
     */
    @TableField("created_at")
    private LocalDateTime createdAt;

    /**
     * 用户头像（非数据库字段）
     */
    @TableField(exist = false)
    private String userAvatar;

    /**
     * 用户名（非数据库字段）
     */
    @TableField(exist = false)
    private String userName;

    /**
     * 多久前（非数据库字段）
     */
    @TableField(exist = false)
    private String timeago;
}